package com.example.demo.Redis;

import redis.clients.jedis.Jedis;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Redis {
    /**
     * 在java端连接redis
     * @param args
     */
    public static void main1(String[] args) {
        //这个是Linux的ip地址
        String host = "172.20.10.5";
        int port = 6379;
        Jedis jedis = new Jedis(host,port);
        //设置密码
        jedis.auth("Liupeng8");

        System.out.println(jedis.ping());

    }

    /**
     * 字符串类型的测试
     * @param args
     */
    public static void main2(String[] args) {
        //首先需要获得我的redis数据库的连接
        Jedis jedis = new Jedis("172.20.10.5",6379);
        //设置密码
        jedis.auth("Liupeng8");

        jedis.set("setName","字符串的名称");

        System.out.println(jedis.ping());
        String strName = jedis.get("setName");
        System.out.println(strName);

        /**
         * 关闭redis
         */
        jedis.close();
    }

    /**
     * String的作用是用来减轻数据库本省的压力
     * 需求：
     *      判断某个ksy是否存在，如果存在，就从redis中查询
     *      如果不存在，就查询数据库，并且将查询出来的数据存储到redis中
     */
    public static void main3(String[] args) {
        Jedis jedis = new Jedis("172.20.10.5",6379);
        jedis.auth("Liupeng8");

        String key = "applicationName";

        if (jedis.exists(key)){
            System.out.println("这个key已经存在了");
            String result =  jedis.get(key);
            System.out.println("这个key的值是：" + result);
        }else {
            System.out.println("在redis中没有这个Key");
            //然后到数据库中进行查询
            //假设已经查询出来了
            String resule = "微信小商城";
            jedis.set(key,resule);

            System.out.println("数据库中查询得到" + resule);

        }

        jedis.close();
    }

    /**
     * 设置redis的连接池
     * @param args
     */
    public static void main4(String[] args) {
        //再用Jedis连接
        Jedis jedis = RedisUtil.getJedsi();

        String key = "applicationName";

        if (jedis.exists(key)){
            System.out.println("这个key已经存在了");
            String result =  jedis.get(key);
            System.out.println("这个key的值是：" + result);
        }else {
            System.out.println("在redis中没有这个Key");
            //然后到数据库中进行查询
            //假设已经查询出来了
            String resule = "微信小商城";
            jedis.set(key,resule);

            System.out.println("数据库中查询得到" + resule);

        }

        RedisUtil.close(jedis);
    }

    /**
     * 完成对哈希类型的操作
     *      判断redis中是否有这个key如果有直接取值
     *      如果没有查询数据库将这个redis返回给对象
     * @param args
     */
    public static void main5(String[] args) {
        Jedis jedis = RedisUtil.getJedsi();

        String keys = "users";
        if (jedis.exists(keys)){
            //当这个key存在的时候我们就返回这个对象
            Map<String,String> map =  jedis.hgetAll(keys);
            System.out.println("在redis中查询的是");
            System.out.println(map.get("id") + "\n" + map.get("name") + "\n" + map.get("age") + "\n" + map.get("remark"));
        }else {
            //如果这个key不存在我们需要对数据库中进行查询处理然后返回并且存储到redis中
            System.out.println("redis中没有这个值");
            jedis.hset(keys,"id","1");
            jedis.hset(keys,"name","lpp");
            jedis.hset(keys,"age","25");
            jedis.hset(keys,"remark","现在我是一个很菜的程序员，我要变的很强然后离开这个公司");

        }

        RedisUtil.close(jedis);
    }

    public static void main(String[] args) {
        Jedis jedis = RedisUtil.getJedsi();

        int id = 20;
        String key = User.getKeyName() + id;

        if (jedis.exists(key)){
            Map<String,String> map = jedis.hgetAll(key);
            User user = new User();
            user.setId(Integer.valueOf(map.get("id")));
            user.setName(map.get("name"));
            user.setAge(Integer.valueOf(map.get("age")));
            user.setRemark(map.get("remark"));
            System.out.println(user);
        }else {
            User user = new User();
            user.setId(id);
            user.setName("刘鹏鹏");
            user.setAge(25);
            user.setRemark("我是一个很菜的程序员我会成长起来的");
            Map<String,String> map = new HashMap<String, String>();
            map.put("id",user.getId() + "");
            map.put("name",user.getName());
            map.put("age",user.getAge() + "");
            map.put("remark",user.getRemark());
            jedis.hmset(key,map);
        }


        RedisUtil.close(jedis);
    }
}
